package com.ljx.lambda.lambda01;

import java.util.function.Consumer;
import java.util.function.Supplier;

/**
 *  我们知道使用Lambda表达式的前提是需要有函数式接口。
 *  而Lambda使用时不关心接口名，抽象方法名，只关心抽象方法的参数列表和返回值类型。
 *  因此为了让我们使用Lambda方便，JDK提供了大量常用的函数式接口。
 *  ---无需自定义函数式接口。
 *  ---如果JDK不提供一些函数式接口，那么每个人需要自定义函数式接口，而且每个人定义的名称不一致。
 *  内置的函数式接口都在
 * java.util.function包下
 * @author LJX
 * @Description: TODO
 * @Date: 2022/11/3 15:20
 * @Version 1.0
 */
public class Test05 {
	public static void main(String[] args) {

		Supplier supplier = () ->{
			int sum=0;
			for (int i = 0; i <= 100; i++) {
				sum+=i;
			}
			return sum;
		};
		fun(supplier);
		fun(()->10);
	}
	public static void fun(Supplier<Integer> supplier){
		/**
		 * 有返回值无参的函数式接口
		 * 方法没有参数，有返回值。 当我们需要无参有返回值的函数式接口，就可以使用这种内置。
		 * fun是自己写的方法，未来可能调用jdk自带的方法，参数也可能就是上面给的函数式接口。
		 */
		Integer integer = supplier.get();
		System.out.println(integer);
	}
}
